package com.zsqat.eshop.order.interceptor;

import com.zsqat.common.constant.AuthConstant;
import com.zsqat.common.vo.MemberResponseVo;
import org.springframework.stereotype.Component;
import org.springframework.util.AntPathMatcher;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;

@Component
public class LoginUserInterceptor implements HandlerInterceptor {

  public static ThreadLocal<MemberResponseVo> loginUser = new ThreadLocal<>();

  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

    String uri = request.getRequestURI();
    AntPathMatcher antPathMatcher = new AntPathMatcher();
    boolean match = antPathMatcher.match("/order/order/status/**", uri);
    boolean match1 = antPathMatcher.match("/payed/notify", uri);
    if (match || match1) {
      return true;
    }

    // 获取登录的用户信息
    MemberResponseVo attribute = (MemberResponseVo) request.getSession().getAttribute(AuthConstant.LOGIN_USER);

    if (attribute != null) {
      // 把登录后用户的信息放在ThreadLocal里面进行保存
      loginUser.set(attribute);

      return true;
    } else {
      //未登录，返回登录页面
      response.setContentType("text/html;charset=UTF-8");
      PrintWriter out = response.getWriter();
      out.println("<script>alert('请先进行登录，再进行后续操作！');location.href='http://auth.eshop.com/login.html'</script>");
      // session.setAttribute("msg", "请先进行登录");
      // response.sendRedirect("http://auth.eshop.com/login.html");
      return false;
    }
  }

  @Override
  public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

  }

  @Override
  public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

  }
}
